package edu.unice.simul.modele.contenus;

import edu.unice.simul.util.Dim;
import edu.unice.simul.util.Direction;

/**
 * La classe abtraite Contenu est la classe mère de tous les objets contenus
 * dans une pièce.
 * 
 */
public abstract class Contenu {
	private Direction direction = new Direction();
	private Dim position = new Dim();

	public Contenu(Dim pos) {
		this(pos, new Direction());
	}

	public Contenu(Dim pos, Direction dir) {
		this.position = pos;
		this.direction = dir;
	}

	/**
	 * @return renvoie la direction de l'objet courant
	 */
	public Direction getDirection() {
		return this.direction;
	}

	/**
	 * @return renvoie la position de l'objet courant
	 */
	public Dim getPosition() {
		return this.position;
	}

	/**
	 * Met a jour la position de l'objet courant
	 * 
	 * @param pos
	 *          nouvelles coordonnées
	 */
	public void setPosition(Dim pos) {
		this.position = pos;
	}

	/**
	 * Met à jour la direction de l'objet courant
	 * 
	 * @param direction
	 *          direction de l'humain
	 */

	public void setDirection(Direction direction) {
		this.direction = direction;
	}

	/**
	 * Coordonnée utilisée pour effectuer les calculs liés au moteur physique
	 */
	public abstract double getAbscisse();

	/**
	 * Coordonnée utilisée pour effectuer les calculs liés au moteur physique
	 */
	public abstract double getOrdonnee();
}
